/*
 * punto.h
 *
 *  Created on: Nov 2, 2012
 *      Author: Carlos Alegría Galicia
 */

#ifndef PUNTO_H_
#define PUNTO_H_

/**
 * Un punto en un espacio euclidiano bidimensional
 *
 * Esta clase implementa un punto en un espacio euclidiano bidimensional con
 * componentes enteros.
 */
typedef struct
{
  int x; /**< La coordenada del punto en el eje X */
  int y; /**< La coordenada del punto en el eje Y */
} punto;

/**
 * Crea un punto con las coordenadas especificadas
 *
 * @param [in] x    La coordenada del punto en el eje X
 * @param [in] y    La coordenada del punto en el eje Y
 * @returns     Un apuntador al punto recién creado
 */
punto *
crear_punto(int x, int y);

/**
 * Compara los puntos especificados
 *
 * Compara por igualdad los puntos especificados. Dos puntos se consideran
 * iguales si sus coordenadas son iguales.
 *
 * @param [in] p1    Uno de los puntos a ser comparados
 * @param [in] p2    Uno de los puntos a ser comparados
 * @returns     Uno si los puntos son iguales, o cero si son diferentes
 */
short
comparar(punto *p1, punto *p2);

/**
 * Imprime el punto especificado en la salida estándar
 *
 * Imprime el punto especificado en la salida estándar con el formato
 * "( p->x, p->y )".
 *
 * @param [in] p1    El punto que será impimido en la salida estándar
 */
void
imprimir_punto(punto *p);

#endif /* PUNTO_H_ */
